
export class RuleCheck {
  store
  constructor(store) {
    this.store = store
  }
  validatePass (type) {
    return this[type] && this[type]()
  }


  /**
* 必填校验
*/
  noCheck () {
    console.log('不验证')
    return function (rule, value, callback) {
      callback();
    }
  }

  /**
 * 必填校验
 */
  value () {
    console.log('我注册必填校验')
    return function (rule, value, callback) {
      console.log('value', value)
      if (value != '' || 0 || null) {
        callback();
      } else {
        callback(new Error('必填校验失败'));
      }
    }
  }

  /**
   * 邮箱校验
   */
  email () {
    console.log('我注册email校验')
    return function (rule, value, callback) {
      if (/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(value)) {
        callback();
      } else {
        callback(new Error('email类型校验失败'));
      }
    }
  }
  /**
   * 字符串校验
   */
  string () {
    console.log('我注册string校验')
    return function (rule, value, callback) {
      if (Object.prototype.toString.call(value).slice(8, -1) === 'String') {
        callback();
      } else {
        callback(new Error('string类型校验失败'));
      }
    }
  }

  /**
   * 手机校验
   * @returns 
   */
  phone () {
    console.log('我注册phone校验')
    return function (rule, value, callback) {
      if (/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(value)) {
        callback();
      } else {
        callback(new Error('phone类型校验失败'));
      }
    }
  }

  /**
   * 身份证校验
   * @returns 
   */
  card () {
    console.log('我注册card校验')
    return function (rule, value, callback) {
      if (/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
        callback();
      } else {
        callback(new Error('card类型校验失败'));
      }
    }
  }


  /**
   * 邮政编码校验
   * @returns 
   */
  postal () {
    console.log('我注册postal校验')
    return function (rule, value, callback) {
      if (/[1-9]\d{5}(?!\d)/.test(value)) {
        callback();
      } else {
        callback(new Error('postal类型校验失败'));
      }
    }
  }


  /**
   * 邮政编码校验
   * @returns 
   */
  qq () {
    console.log('我注册qq校验')
    return function (rule, value, callback) {
      if (/^[1-9][0-9]{4,9}$/.test(value)) {
        callback();
      } else {
        callback(new Error('qq类型校验失败'));
      }
    }
  }

  /**
 * IP校验
 * @returns 
 */
  IP () {
    console.log('我注册IP校验')
    return function (rule, value, callback) {
      if (/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(value)) {
        callback();
      } else {
        callback(new Error('IP类型校验失败'));
      }
    }
  }


  /**
 * 英文校验
 * @returns 
 */
  english () {
    console.log('我注册english校验')
    return function (rule, value, callback) {
      if (/^[a-zA-Z]+$/.test(value)) {
        callback();
      } else {
        callback(new Error('english类型校验失败'));
      }
    }
  }

  /**
  * 中文校验
  * @returns 
  */
  chinese () {
    console.log('我注册chinese校验')
    return function (rule, value, callback) {
      if (/^[\\u4E00-\\u9FA5]+$/.test(value)) {
        callback();
      } else {
        callback(new Error('chinese类型校验失败'));
      }
    }
  }

  /**
   * 自定义校验
   */
  selfCheck (ruleStr) {
    let reg = eval(ruleStr)
    console.log('我注册自定义校验')
    return function (rule, value, callback) {
      // console.log('rule',rule)
      if (!reg.test(value)) {
        callback();
      } else {
        callback(new Error('自定义校验失败'));
      }
    }
  }


}